import store from '@/store'

const whiteList = [
	"/pages/index/index",
	"/pages/login/login"
] //白名單
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
	uni.addInterceptor(item, {
		invoke(e) { // 调用前拦截
			const { user, dict } = store()
			const isToken = user.token.length > 0
			const url = e.url.split('?')[0] // 获取当前页面路径（即url去掉"?"和"?"后的参数）
			const check = dict.checkoutIsNull(); // 判断字典是否为空或缺失
			console.log(check)
			// 判断字典为空时重新获取赋值
			if(check) {
				dict.getData()
			}
			if(isToken) {
				if(url === '/pages/login/login') {
					uni.redirectTo({
						url: "/pages/index/index"
					})
					return false
				} else {
					return true
				}
			} else {
				// 无token的时候判断要打开的页面是否在白名单中
				if(whiteList.includes(url)) {
					return true
				} else {
					uni.showToast({
						title: '该页面需要登录才能访问，请先登录',
						icon: 'none'
					})
					setTimeout(() => {
						uni.redirectTo({
							url: "/pages/login/login"
						})
					}, 1000)
					console.log('失败跳转');
					return false
				}
			}
		},
		fail(err) { // 失败回调拦截 
			console.log('失败回调拦截',err);
		},
	})
})